package com.keepsport.keepsportapi.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

import java.io.ByteArrayInputStream;
import java.util.Calendar;
import java.util.Date;

/***
 *      ┌─┐       ┌─┐ + +
 *   ┌──┘ ┴───────┘ ┴──┐++
 *   │                 │
 *   │       ───       │++ + + +
 *   ███████───███████ │+
 *   │                 │+  
 *   │       ─┴─       │
 *   │                 │
 *   └───┐         ┌───┘
 *       │         │ 
 *       │         │   + +神兽保佑
 *       │         │      代码无BUG!
 *       │         └──────────────┐
 *       │                        │
 *       │                        ├─┐
 *       │                        ┌─┘
 *       │                        │
 *       └─┐  ┐  ┌───────┬──┐  ┌──┘  + + + +
 *         │ ─┤ ─┤       │ ─┤ ─┤
 *         └──┴──┘       └──┴──┘  + + + +
 *          Data:2022/6/22
 *          @author wyb
 *          Description
 */
public class AliOssUtil {
    // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    public static final String endpoint = "oss-cn-hangzhou.aliyuncs.com";
    // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
    public static final String accessKeyId = "LTAI5t994BbawqT7HXKzEtSz";
    public static final String accessKeySecret = "nPyystsHYqTLPK0FdZmIxshN6hzWNs";

    //存储资源的地方
    public static final String bucket="kingmoney";

    //Oss 客户端对象
    public static OSS client;
    static {
        client=new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }

    /**
     * 上传资源到Oss
     * @param data 要上传的文件内容
     * @param name 文件的名称
     * @return 访问地址*/
    public static String upload(byte[] data,String name){
        //上传数据到Oss
        client.putObject(bucket,name,new ByteArrayInputStream(data));
        //创建访问路径
        Calendar calendar=Calendar.getInstance();
        calendar.add(Calendar.YEAR,1);
        return getUrl(name,calendar.getTime());
    }
    /**
     * 生成访问地址*/
    public static String getUrl(String name, Date date){
        return client.generatePresignedUrl(bucket,name,date).toString();
    }
}
